/*
 * Copyright (c) 2023 Cshoo Org. All Rights Reserved.
 */

package org.cshoo.tattoo.datacenter.domain.repository;

import org.cshoo.tattoo.datacenter.domain.po.Template;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;

import javax.transaction.Transactional;

/**
 * @author 杨翼
 * @since 1.0
 */
public interface ITemplateRepository extends CrudRepository<Template, Long> {

    /**
     * 修改template基本信息
     * 只修改name，description，textContent等信息
     *
     * @param template template po
     */
    @Query("update Template template set template.name = :#{#template.name}, template.description = :#{#template.description}, template.content = :#{#template.content}, template.fileStoreName = :#{#template.fileStoreName}, template.lastModifiedBy = :#{#template.lastModifiedBy}, template.lastModifiedDate = :#{#template.lastModifiedDate} where template.id = :#{#template.id}")
    @Transactional
    @Modifying
    void updateTemplate(Template template);

    /**
     * 查询模板
     *
     * @param keyword     关键字
     * @param pageable 分页对象
     * @return 模板
     */
    @Query("SELECT template FROM Template template WHERE template.code like %:#{#keyword}% OR template.name LIKE %:#{#keyword}%")
    Page<Template> queryTemplates(String keyword, Pageable pageable);

    /**
     * 根据编号查询模板
     *
     * @param code 编号
     * @return 模板
     */
    Template findByCode(String code);
}
